Various types of integrated circuits are used in data communication applications. These integrated circuits include serial-to-parallel data converters, parallel-to-serial data converters, buffers, drivers, and stacks, for examples. Stacks are memory devices that store and transmit data in the same or a different order than that in which the data was received. For example, the data first received by a stack may be the first data transmitted (FIFO) or latter received data may be sent out first (LIFO). Almost all integrated circuits that are used in data communication applications receive and transmit data. They may store multiple units of data and they may convert data from one data format to another or they may convert data from one electrical specification to another. Integrated circuits to provide these various communication functions are well known.
The integrity of data becomes an important issue as data move through multiple devices, are converted into different formats or specifications, or are stored in different devices. Various techniques for verifying data units as they move through different devices have been developed. Many of these techniques require the addition of data about the communicated data that may be used to verify the communicated data. For example, parity is a data verification parameter that indicates whether a unit of data, such as a byte or word, contains an even or odd number of logical ‘1’ bits. While parity is typically used to verify the content of a data unit, other techniques may be used to verify data groups, such as messages or streams, which are comprised of data units. Examples of these verification schemes include cyclic redundancy checksums or longitudinal redundancy checksums. These exemplary data verification schemes and equivalents generate data verification parameters based on the data content of data units or groups. These data verification parameters are transferred with the corresponding data units and/or groups used to generate them. A data receiver uses the same technique to generate data parameters based on the data content of the data units or groups that it receives. It then compares the data verification parameters it generates with the ones that it receives. If the generated data verification parameters correspond to the received data verification parameters, a high probability exists that the data units or groups received are the data units or groups that were transferred.
Integrated circuits used in data communication may contain test circuitry that supports the intentional inclusion of erroneous data verification parameters so software or firmware that processes detected data errors at a data receiver may be tested. In this manner, the detection of erroneous data content and the processing that occurs in response to such detection may be confirmed. Typically, test circuitry in an integrated circuit that supports the inclusion of erroneous data parameters uses a global data register that may only be used to statically set a data parameter to an erroneous parameter. For example, a FIFO may transmits a nine (9) bit data word that includes eight (8) bits of data and a one (1) bit data parameter indicative of the parity of the eight bit data word. Test circuitry may include a global register that permits a user to set the parity bit to a fixed data verification parameter for the next data transmission. When the user knows the data content of a data word to be transmitted, the fixed parameter is chosen to be one that erroneously identifies the parity of the data word. When this data word and parity data parameter are received, a data receiver should detect the error and process an exception for the data word. Thus, the global register of the test circuitry supports verification of data exception processing.
One limitation of the test circuitry defined above arises from the timing of the generation of the error condition. To test a data receiver, the data verification parameter is set to an erroneous value for the next data unit to be transferred. As a consequence, only the first data word or group transmitted after the erroneous data parameter is set may be tested at the data receiver. Such testing does not allow a user to predefine the occurrence of a real-time error condition that occurs after the successful transmission of multiple data words or groups that included valid data verification parameters for verification of each word or group.
What is needed is a method for including erroneous data verification parameters with data units or groups that follow in real-time other data units or groups that have valid data verification parameters.
What is needed is a method for identifying a particular data word or group in a sequence of data words or groups for inclusion with an erroneous data verification parameter for real-time testing.